// 导入操作的type类型
import * as types from '../typings/commonType'
// 进行登录
import { getNowPlayingFilmListApi } from '@/api/filmApi'
// token
import { setToken, getToken } from '@/utils/token'

export default {
  // 是否强制开启命名空间
  // 默认不是强制
  // 不是强制的时候只有state有命名空间限制，而mutations、actions、getters它们都没有命令空间限制
  // 强制开启
  // state有命名空间，而且它的获取方式也发生改变  命名空间名称.变量  => common.token
  // mutations、actions、getters都有命名空间  命名空间名称/名称
  // namespaced: true,

  state: {
    // 全局底部菜单隐藏和显示
    isshow: true,
    token: null
  },
  /* getters: {
    token(state) {
      return state.token || getToken()
    }
  }, */
  mutations: {
    // 操作名称统一化
    [types.COMMON_SETISSHOW.split('/')[1]](state, bool) {
      state.isshow = bool
    },
    // 设置token
    [types.COMMON_SETTOKEN.split('/')[1]](state, token) {
      // 写入到sessionStorage中
      setToken(token)
      // 修 改vuex中的状态
      state.token = token
    }
  },
  actions: {
    // 返回是一个promise
    // payload 对象，username vcode
    async [types.COMMON_SETTOKEN.split('/')[1]]({ commit }, payload) {
      // 假设从这个请求中得到了token值
      let ret = await getNowPlayingFilmListApi()
      // token存储到vuex中的state数据中
      commit(types.COMMON_SETTOKEN.split('/')[1], 'token')
      return true;
    }
  }
}